package ejb.cbm.admin.entity;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import ejb.com.bbva.cbm.dominio.TransaccionAutorizacionEntity;

@Entity
@Table(name="TRANSACCION")

public class TransaccionEntity  implements java.io.Serializable {

    // Fields    

     private Long codigotransaccion;
     private String codigotransaccionhost;
     private String descripciontransaccion;
     private Long flaghabilitar;
     private Long flagafectasaldo;
     private boolean flagafectasaldoValido;
     private Long flagsaldodisponible;
     private boolean flagsaldodisponibleValido;
     private Long flagsaldocontable;
     private boolean flagsaldocontableValido;
     private Long flagsignificativo;
     private boolean flagsignificativoValido;
     private Long flagautorizacion;
     private boolean flagautorizacionValido;
     private Long flagenviarhost;
     private boolean flagenviarhostValido;
     private Long flagreniec;
     private boolean flagreniecValido;
     private Long flagvalidarsaldo;
     private boolean flagvalidarsaldoValido;
     private Long flagctasrestringidas;
     private boolean flagctasrestringidasValido;
     private Long flagvisible;
     

     private Long codigoformatoimpresion;
     private Long flagactivo;

     private boolean flagExtorno;
     private boolean flagAuditoria;
     private boolean flagOperacion;
     
     private List<TransaccionSegmentoEntity> autorizacionesSegmento;
     private List<TransaccionAutorizacionEntity> autorizaciones;

     private String usuarioregistro;
     private Date fecharegistro;
     private String usuariomodificacion;
     private Date fechamodificacion;
     
     private boolean flagTransaccion;

    // Constructors

    /** default constructor */
    public TransaccionEntity() {
    }

	/** minimal constructor */
    public TransaccionEntity(Long codigotransaccion, String usuarioregistro, Date fecharegistro, String usuariomodificacion, Date fechamodificacion) {
        this.codigotransaccion = codigotransaccion;
        this.usuarioregistro = usuarioregistro;
        this.fecharegistro = fecharegistro;
        this.usuariomodificacion = usuariomodificacion;
        this.fechamodificacion = fechamodificacion;
    }
    
    /** full constructor */
    public TransaccionEntity(Long codigotransaccion, String codigotransaccionhost, String descripciontransaccion, Long flaghabilitar, Long flagafectasaldo, Long flagsaldodisponible, Long flagsaldocontable, Long flagsignificativo, Long flagautorizacion, Long flagenviarhost, Long flagreniec, Long flagvalidarsaldo, Long flagctasrestringidas, Long flagvisible, Long codigoformatoimpresion, Long flagactivo, String usuarioregistro, Date fecharegistro, String usuariomodificacion, Date fechamodificacion) {
        this.codigotransaccion = codigotransaccion;
        this.codigotransaccionhost = codigotransaccionhost;
        this.descripciontransaccion = descripciontransaccion;
        this.flaghabilitar = flaghabilitar;
        this.flagafectasaldo = flagafectasaldo;
        this.flagsaldodisponible = flagsaldodisponible;
        this.flagsaldocontable = flagsaldocontable;
        this.flagsignificativo = flagsignificativo;
        this.flagautorizacion = flagautorizacion;
        this.flagenviarhost = flagenviarhost;
        this.flagreniec = flagreniec;
        this.flagvalidarsaldo = flagvalidarsaldo;
        this.flagctasrestringidas = flagctasrestringidas;
        this.flagvisible = flagvisible;
        this.codigoformatoimpresion = codigoformatoimpresion;
        this.flagactivo = flagactivo;
        this.usuarioregistro = usuarioregistro;
        this.fecharegistro = fecharegistro;
        this.usuariomodificacion = usuariomodificacion;
        this.fechamodificacion = fechamodificacion;
    }

   
    // Property accessors
    @Id
    @Column(name="CODIGOTRANSACCION", unique=true, nullable=false, insertable=true, updatable=true, precision=8, scale=0)
    public Long getCodigotransaccion() {
        return this.codigotransaccion;
    }
    
    public void setCodigotransaccion(Long codigotransaccion) {
        this.codigotransaccion = codigotransaccion;
    }
    
    @Column(name="CODIGOTRANSACCIONHOST", unique=false, nullable=true, insertable=true, updatable=true, length=8)
    public String getCodigotransaccionhost() {
        return this.codigotransaccionhost;
    }
    
    public void setCodigotransaccionhost(String codigotransaccionhost) {
        this.codigotransaccionhost = codigotransaccionhost;
    }
    
    @Column(name="DESCRIPCIONTRANSACCION", unique=false, nullable=true, insertable=true, updatable=true, length=50)
    public String getDescripciontransaccion() {
        return this.descripciontransaccion;
    }
    
    public void setDescripciontransaccion(String descripciontransaccion) {
        this.descripciontransaccion = descripciontransaccion;
    }
    
    @Column(name="FLAGHABILITAR", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlaghabilitar() {
        return this.flaghabilitar;
    }
    
    public void setFlaghabilitar(Long flaghabilitar) {
        this.flaghabilitar = flaghabilitar;
    }
    
    @Column(name="FLAGAFECTASALDO", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagafectasaldo() {
        return this.flagafectasaldo;
    }
    
    public void setFlagafectasaldo(Long flagafectasaldo) {
        this.flagafectasaldo = flagafectasaldo;
    }
    
    @Column(name="FLAGSALDODISPONIBLE", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagsaldodisponible() {
        return this.flagsaldodisponible;
    }
    
    public void setFlagsaldodisponible(Long flagsaldodisponible) {
        this.flagsaldodisponible = flagsaldodisponible;
    }
    
    @Column(name="FLAGSALDOCONTABLE", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagsaldocontable() {
        return this.flagsaldocontable;
    }
    
    public void setFlagsaldocontable(Long flagsaldocontable) {
        this.flagsaldocontable = flagsaldocontable;
    }
    
    @Column(name="FLAGSIGNIFICATIVO", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagsignificativo() {
        return this.flagsignificativo;
    }
    
    public void setFlagsignificativo(Long flagsignificativo) {
        this.flagsignificativo = flagsignificativo;
    }
    
    @Column(name="FLAGAUTORIZACION", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagautorizacion() {
        return this.flagautorizacion;
    }
    
    public void setFlagautorizacion(Long flagautorizacion) {
        this.flagautorizacion = flagautorizacion;
    }
    
    @Column(name="FLAGENVIARHOST", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagenviarhost() {
        return this.flagenviarhost;
    }
    
    public void setFlagenviarhost(Long flagenviarhost) {
        this.flagenviarhost = flagenviarhost;
    }
    
    @Column(name="FLAGRENIEC", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagreniec() {
        return this.flagreniec;
    }
    
    public void setFlagreniec(Long flagreniec) {
        this.flagreniec = flagreniec;
    }
    
    @Column(name="FLAGVALIDARSALDO", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagvalidarsaldo() {
        return this.flagvalidarsaldo;
    }
    
    public void setFlagvalidarsaldo(Long flagvalidarsaldo) {
        this.flagvalidarsaldo = flagvalidarsaldo;
    }
    
    @Column(name="FLAGCTASRESTRINGIDAS", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagctasrestringidas() {
        return this.flagctasrestringidas;
    }
    
    public void setFlagctasrestringidas(Long flagctasrestringidas) {
        this.flagctasrestringidas = flagctasrestringidas;
    }
    
    @Column(name="FLAGVISIBLE", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagvisible() {
        return this.flagvisible;
    }
    
    public void setFlagvisible(Long flagvisible) {
        this.flagvisible = flagvisible;
    }
    
    @Column(name="CODIGOFORMATOIMPRESION", unique=false, nullable=true, insertable=true, updatable=true, precision=3, scale=0)
    public Long getCodigoformatoimpresion() {
        return this.codigoformatoimpresion;
    }
    
    public void setCodigoformatoimpresion(Long codigoformatoimpresion) {
        this.codigoformatoimpresion = codigoformatoimpresion;
    }
    
    @Column(name="FLAGACTIVO", unique=false, nullable=true, insertable=true, updatable=true, precision=1, scale=0)
    public Long getFlagactivo() {
        return this.flagactivo;
    }
    
    public void setFlagactivo(Long flagactivo) {
        this.flagactivo = flagactivo;
    }
    
    @Column(name="USUARIOREGISTRO", unique=false, nullable=false, insertable=true, updatable=true, length=30)
    public String getUsuarioregistro() {
        return this.usuarioregistro;
    }
    
    public void setUsuarioregistro(String usuarioregistro) {
        this.usuarioregistro = usuarioregistro;
    }
    
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAREGISTRO", unique=false, nullable=false, insertable=true, updatable=true, length=7)
    public Date getFecharegistro() {
        return this.fecharegistro;
    }
    
    public void setFecharegistro(Date fecharegistro) {
        this.fecharegistro = fecharegistro;
    }
    
    @Column(name="USUARIOMODIFICACION", unique=false, nullable=false, insertable=true, updatable=true, length=30)
    public String getUsuariomodificacion() {
        return this.usuariomodificacion;
    }
    
    public void setUsuariomodificacion(String usuariomodificacion) {
        this.usuariomodificacion = usuariomodificacion;
    }
    
    @Temporal(TemporalType.DATE)
    @Column(name="FECHAMODIFICACION", unique=false, nullable=false, insertable=true, updatable=true, length=7)
    public Date getFechamodificacion() {
        return this.fechamodificacion;
    }
    
    public void setFechamodificacion(Date fechamodificacion) {
        this.fechamodificacion = fechamodificacion;
    }

    @Column(name="flagafectasaldoValido")
    public boolean getFlagafectasaldoValido() {
		return flagafectasaldoValido;
	}

	public void setFlagafectasaldoValido(boolean flagafectasaldoValido) {
		this.flagafectasaldoValido = flagafectasaldoValido;
	}

    @Column(name="flagsaldodisponibleValido")
	public boolean getFlagsaldodisponibleValido() {
		return flagsaldodisponibleValido;
	}

	public void setFlagsaldodisponibleValido(boolean flagsaldodisponibleValido) {
		this.flagsaldodisponibleValido = flagsaldodisponibleValido;
	}

    @Column(name="flagsaldocontableValido")
	public boolean getFlagsaldocontableValido() {
		return flagsaldocontableValido;
	}

	public void setFlagsaldocontableValido(boolean flagsaldocontableValido) {
		this.flagsaldocontableValido = flagsaldocontableValido;
	}

    @Column(name="flagsignificativoValido")
	public boolean getFlagsignificativoValido() {
		return flagsignificativoValido;
	}

	public void setFlagsignificativoValido(boolean flagsignificativoValido) {
		this.flagsignificativoValido = flagsignificativoValido;
	}

    @Column(name="flagautorizacionValido")
	public boolean getFlagautorizacionValido() {
		return flagautorizacionValido;
	}

	public void setFlagautorizacionValido(boolean flagautorizacionValido) {
		this.flagautorizacionValido = flagautorizacionValido;
	}

    @Column(name="flagenviarhostValido")
	public boolean getFlagenviarhostValido() {
		return flagenviarhostValido;
	}

	public void setFlagenviarhostValido(boolean flagenviarhostValido) {
		this.flagenviarhostValido = flagenviarhostValido;
	}

    @Column(name="flagreniecValido")
	public boolean getFlagreniecValido() {
		return flagreniecValido;
	}

	public void setFlagreniecValido(boolean flagreniecValido) {
		this.flagreniecValido = flagreniecValido;
	}

    @Column(name="flagvalidarsaldoValido")
	public boolean getFlagvalidarsaldoValido() {
		return flagvalidarsaldoValido;
	}

	public void setFlagvalidarsaldoValido(boolean flagvalidarsaldoValido) {
		this.flagvalidarsaldoValido = flagvalidarsaldoValido;
	}

    @Column(name="flagctasrestringidasValido")
	public boolean getFlagctasrestringidasValido() {
		return flagctasrestringidasValido;
	}

	public void setFlagctasrestringidasValido(boolean flagctasrestringidasValido) {
		this.flagctasrestringidasValido = flagctasrestringidasValido;
	}

    @Column(name="flagExtorno")
    public boolean getFlagExtorno() {
		return flagExtorno;
	}

	public void setFlagExtorno(boolean flagExtorno) {
		this.flagExtorno = flagExtorno;
	}

	@Transient
	public List<TransaccionAutorizacionEntity> getAutorizaciones() {
		return autorizaciones;
	}
	
	public void setAutorizaciones(List<TransaccionAutorizacionEntity> autorizaciones) {
		this.autorizaciones = autorizaciones;
	}
	
	@Transient
    public List<TransaccionSegmentoEntity> getAutorizacionesSegmento() {
		return autorizacionesSegmento;
	}

	public void setAutorizacionesSegmento(List<TransaccionSegmentoEntity> autorizacionesSegmento) {
		this.autorizacionesSegmento = autorizacionesSegmento;
	}
	
	@Override
	public boolean equals(Object o) {	
		TransaccionEntity te=(TransaccionEntity)o;
		return codigotransaccion.equals(te.getCodigotransaccion());
	}

	public void setFlagAuditoria(boolean flagAuditoria) {
		this.flagAuditoria = flagAuditoria;
	}
	@Column(name="flagAuditoria")
	public boolean getFlagAuditoria() {
		return flagAuditoria;
	}

	public void setFlagOperacion(boolean flagOperacion) {
		this.flagOperacion = flagOperacion;
	}
	@Column(name="FLAGREPORTEOPERACION")
	public boolean isFlagOperacion() {
		return flagOperacion;
	}

	public void setFlagTransaccion(boolean flagTransaccion) {
		this.flagTransaccion = flagTransaccion;
	}
	
	@Column(name="FLAGTRANSACCION")
	public boolean isFlagTransaccion() {
		return flagTransaccion;
	}
}